/**
 * 实例内部类
 */
class OuterClass{

    private int data1 = 10;
    private int data2 = 20;

    // 实例内部类 -- 相当于一个实例变量
    class InnerClass{
        public int data1 = 22;
        public int data3 = 90;

        // public static int data2 = 22; 实例内部类中，不能定义静态的成员变量
        // 非要定义，就定义静态常量
        public static final int DATA = 22;

        public InnerClass() {
            System.out.println("InnerClass:: 无参构造方法");
        }

        public void test(){
            System.out.println("InnerClass:: test()");
            // 要访问外部类中的同名变量
            System.out.println(OuterClass.this.data1);// 10
            System.out.println(data1);// 22
        }
    }

    public void func1(){
        System.out.println("OuterClass:: func1()");
    }
}
// 实例内部类可以被其他类继承吗？ 可以
class Child extends OuterClass.InnerClass{
    public Child(OuterClass out) {
        out.super();
    }
}


public class TestDemo {
    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.test();
    }
}